Přihlašuji uživatele

Raspberry PI - Předpověď počasí

Autor: MarMar
Přidáno: 12.10.2013 14:44
Zobrazení: 818x krát
Tagy: Elektrotechnika - Programování - Weather - Raspberry PI - PWM - Servo - Python


Předpověď počasí s Raspberry PI pomocí PWM a serva

!!!Pro chod tohoto programu potřebujete mít nainstalovaný na malině Python a GPIO pro Python!!!

Jak to funguje:

Pomocí urllib knihovny si stáhneme do proměnné HTML stránku s předpovědí počasí. Z řetězce pomocí index získáme pozici hledaného řetězce s počasím. Postupně parsujeme řetězec, dokud nedostaneme název počasí. V cyklu projdeme jednotlive typy počasí a zkontrolujeme, zda sedí s našim vyparsovaným. Pokud ano, zapamatujeme si index, pomocí funkce GetDuty si necháme vrátit duty pro PWMko a poté ho aplikujeme. Každou hodinu zkontrolujeme znova.

Zdroják:

#! /usr/bin/python

import sys
import time
import urllib
import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
GPIO.setup(12, GPIO.OUT)

delay = 3600;
dc = 0;
frek = 100;
CNT = 0;
text = "";
text2 = "";
text3 = "";
c = 0;

pocasi = ["jasno","skorojasno","polojasno","oblacno","zatazeno","obcasny-dest","prehanky-dest","prehanky-bourky"]

PWmko = GPIO.PWM(12,frek);

def GetDuty(int):
        return {
                1 : 6,
                2 : 9,
                3 : 11,
                4 : 13,
                5 : 15,
                6 : 18,
                7 : 19,
                8 : 21,
        }[int]


while (c<1):
        #STAZENI STRANKY
        html = urllib.urlopen("http://www.in-pocasi.cz/mesta/cz/moravskoslezsky/ostrava-295/").read();

        P = html.index(text);
        P = html.index("tra",P+1);
        P = html.index(text2,P+1);
        P = html.index(text2,P+1);
        P2 = html.index(text3,P);

        page = html[P+14:P2-2];
        page = page[7:100];

        P = page.index("/");
        P = page.index("/",P+2);
        page = page[P+1:P+100];
        P = page.index(".");
        page = page[0:P];


        CNT = 0
        for I in pocasi:
                if(I==page):
                        dc = GetDuty(CNT+1);
                        PWmko.start(dc);
                        time.sleep(1.1);
                        PWmko.stop();

                CNT = CNT+1

        time.sleep(delay)

 


Fotky:

Komentáře:

Od: Anonymní uživatel
Název:

Zpráva:
Kód: